অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) ব্যবহার করে HTTP রেসপন্স হ্যান্ডেল করা একটি গুরুত্বপূর্ণ কাজ। এটি ব্যবহারকারীদের HTTP রেসপন্সের স্ট্যাটাস, কন্টেন্ট এবং অন্যান্য তথ্য পরীক্ষা করতে সক্ষম করে। HttpResponse
অবজেক্টের মাধ্যমে রেসপন্স হ্যান্ডেল করা হয়, যা HTTP সার্ভার থেকে আসা তথ্য ধারণ করে। এই প্রক্রিয়া সাধারণত HTTP রিকুয়েস্টের উত্তর প্রাপ্তি, এর স্ট্যাটাস কোড যাচাই, এবং কন্টেন্টের উপস্থাপনায় ব্যবহৃত হয়।
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class HttpResponseHandlingExample {
public static void main(String[] args) {
// HTTP ক্লায়েন্ট তৈরি করা
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// GET রিকুয়েস্ট তৈরি
HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/posts");
// রিকুয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ
HttpResponse response = httpClient.execute(request);
// রেসপন্স স্ট্যাটাস কোড পরীক্ষা
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Response Status Code: " + statusCode);
// রেসপন্স কন্টেন্ট গ্রহণ করা
String responseContent = EntityUtils.toString(response.getEntity());
System.out.println("Response Content: " + responseContent);
} catch (IOException e) {
// রেসপন্স প্রাপ্তিতে ত্রুটি হলে এক্সসেপশন হ্যান্ডেল করা
System.err.println("Error occurred while making the request: " + e.getMessage());
}
}
}
HttpGet
: HTTP GET রিকুয়েস্ট তৈরি করা হয়েছে। এটি একটি URL পেতে ব্যবহৃত হয়।httpClient.execute(request)
: HTTP রিকুয়েস্টটি সার্ভারে পাঠানো হয় এবং তারপরে রেসপন্স ফিরিয়ে আনা হয়।getStatusLine().getStatusCode()
: HTTP রেসপন্সের স্ট্যাটাস কোড যাচাই করা হয় (যেমন 200 OK, 404 Not Found ইত্যাদি)।EntityUtils.toString(response.getEntity())
: রেসপন্সের কন্টেন্টকে স্ট্রিং আকারে রূপান্তর করা হয়।অ্যাপাচি HTTP ক্লায়েন্ট ব্যবহার করে রেসপন্স হ্যান্ডেল করার প্রক্রিয়া HTTP রিকুয়েস্ট পাঠানোর পর সার্ভার থেকে প্রাপ্ত তথ্য বিশ্লেষণ করতে সহায়ক। এর মধ্যে স্ট্যাটাস কোড যাচাই করা, কন্টেন্ট পর্যালোচনা করা এবং ত্রুটি সনাক্ত করার প্রক্রিয়া অন্তর্ভুক্ত থাকে।
অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) ব্যবহার করে HTTP অনুরোধের প্রতিক্রিয়া (response) থেকে স্ট্যাটাস কোড পড়া একটি সাধারণ কাজ। প্রতিটি HTTP অনুরোধের প্রতিক্রিয়া হিসেবে একটি স্ট্যাটাস কোড প্রদান করা হয়, যা সার্ভারের অবস্থা এবং অনুরোধের ফলাফল সম্পর্কে তথ্য দেয়। অ্যাপাচি HTTP ক্লায়েন্ট ব্যবহার করে এই স্ট্যাটাস কোড সংগ্রহ করা সহজ।
GET অনুরোধে HTTP স্ট্যাটাস কোড পড়তে CloseableHttpResponse
অবজেক্টের getCode()
মেথড ব্যবহার করা হয়।
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.sync.HttpClients;
import org.apache.hc.client5.http.classic.methods.HttpGet;
public class ApacheHttpResponseExample {
public static void main(String[] args) throws Exception {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// GET অনুরোধ তৈরি করা
HttpGet request = new HttpGet("https://example.com");
// অনুরোধ কার্যকর করা এবং প্রতিক্রিয়া সংগ্রহ করা
try (CloseableHttpResponse response = httpClient.execute(request)) {
// স্ট্যাটাস কোড পড়া
int statusCode = response.getCode();
System.out.println("HTTP Response Status Code: " + statusCode);
}
}
}
}
উপরের উদাহরণে, getCode()
মেথডটি HTTP স্ট্যাটাস কোড প্রদান করবে, যা 200 (OK), 404 (Not Found), 500 (Internal Server Error) ইত্যাদি হতে পারে।
POST অনুরোধে একইভাবে getCode()
মেথড ব্যবহার করে স্ট্যাটাস কোড পড়া যায়।
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.sync.HttpClients;
import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.core5.http.ParseException;
import org.apache.hc.client5.http.entity.EntityBuilder;
public class ApacheHttpPostResponseExample {
public static void main(String[] args) throws Exception {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// POST অনুরোধ তৈরি করা
HttpPost request = new HttpPost("https://example.com/api");
request.setEntity(EntityBuilder.create().setText("param1=value1¶m2=value2").build());
// অনুরোধ কার্যকর করা এবং প্রতিক্রিয়া সংগ্রহ করা
try (CloseableHttpResponse response = httpClient.execute(request)) {
// স্ট্যাটাস কোড পড়া
int statusCode = response.getCode();
System.out.println("HTTP Response Status Code: " + statusCode);
}
}
}
}
এখানে, POST অনুরোধের জন্যও একইভাবে getCode()
মেথড ব্যবহার করা হয়েছে।
অ্যাপাচি HTTP ক্লায়েন্টের মাধ্যমে HTTP স্ট্যাটাস কোড পড়া সহজ। CloseableHttpResponse
অবজেক্টের getCode()
মেথড ব্যবহার করে স্ট্যাটাস কোড বের করা যায়, যা সার্ভারের অবস্থার ব্যাপারে গুরুত্বপূর্ণ তথ্য প্রদান করে। GET এবং POST উভয় অনুরোধেই একইভাবে স্ট্যাটাস কোড পড়া সম্ভব।
অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) ব্যবহার করে Response Body থেকে JSON বা XML ডেটা পড়া একটি সাধারণ কাজ। এটি HTTP রিকোয়েস্ট পাঠানোর পর রেসপন্সের বডি থেকে ডেটা রিড করার জন্য ব্যবহৃত হয়। JSON এবং XML সাধারণত সার্ভিস থেকে প্রাপ্ত ডেটা বিন্যাস হিসাবে ব্যবহৃত হয়। নিচে JSON এবং XML ডেটা রিড করার জন্য উদাহরণ দেওয়া হয়েছে।
JSON ডেটা রিড করতে সাধারণত org.apache.http.impl.client.HttpClients
ক্লাস ব্যবহার করা হয় এবং রেসপন্স বডি থেকে JSON ডেটা পড়তে org.apache.http.util.EntityUtils
ক্লাসের সাহায্যে রেসপন্স বডি ক্যাপচার করা হয়। তারপর, JSON প্যার্স করতে org.json
অথবা com.fasterxml.jackson
লাইব্রেরি ব্যবহার করা যেতে পারে।
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.4</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.classic.methods.CloseableHttpResponse;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import java.io.IOException;
public class HttpClientExample {
public static void main(String[] args) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/todos/1");
try (CloseableHttpResponse response = httpClient.execute(request)) {
String responseBody = EntityUtils.toString(response.getEntity());
// JSON প্যার্স করা
JSONObject jsonObject = new JSONObject(responseBody);
System.out.println("JSON Response: " + jsonObject.toString(2));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
HttpGet
ব্যবহার করে একটি GET রিকোয়েস্ট তৈরি করা হয়।EntityUtils.toString()
মেথড ব্যবহার করে রেসপন্স বডি পাঠ করা হয়।JSONObject
ব্যবহার করে JSON ডেটা প্যার্স করা হয় এবং তা প্রিন্ট করা হয়।XML ডেটা রিড করার জন্য, Apache HTTP Client ব্যবহার করা যায় এবং XML প্যার্স করার জন্য javax.xml.parsers.DocumentBuilder
বা অন্যান্য XML প্যার্সিং লাইব্রেরি ব্যবহার করা হয়।
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.4</version>
</dependency>
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.classic.methods.CloseableHttpResponse;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class HttpClientExample {
public static void main(String[] args) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpGet request = new HttpGet("https://www.w3schools.com/xml/note.xml");
try (CloseableHttpResponse response = httpClient.execute(request)) {
String responseBody = EntityUtils.toString(response.getEntity());
// XML প্যার্স করা
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
ByteArrayInputStream inputStream = new ByteArrayInputStream(responseBody.getBytes());
Document document = builder.parse(inputStream);
System.out.println("XML Response: " + document.getDocumentElement().getNodeName());
}
} catch (IOException | Exception e) {
e.printStackTrace();
}
}
}
HttpGet
ব্যবহার করে একটি GET রিকোয়েস্ট তৈরি করা হয়।EntityUtils.toString()
মেথড ব্যবহার করে রেসপন্স বডি পাঠ করা হয়।DocumentBuilderFactory
এবং DocumentBuilder
ব্যবহার করে XML ডেটা প্যার্স করা হয়।Apache HTTP Client ব্যবহার করে HTTP রিকোয়েস্ট পাঠানো এবং JSON বা XML ডেটা রিড করা সম্ভব। JSON ডেটা রিড করার জন্য org.json
বা com.fasterxml.jackson
লাইব্রেরি ব্যবহার করা হয় এবং XML ডেটা রিড করার জন্য javax.xml.parsers.DocumentBuilder
ব্যবহার করা হয়। Response Body থেকে ডেটা রিড করার জন্য EntityUtils.toString()
মেথড ব্যবহার করা হয়।
অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) ব্যবহার করে Response Headers ম্যানিপুলেশন একটি গুরুত্বপূর্ণ কাজ, যা HTTP প্রতিক্রিয়া থেকে অতিরিক্ত তথ্য সংগ্রহ এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Response headers সার্ভারের কাছ থেকে প্রাপ্ত তথ্য, যেমন কুকি, কন্টেন্ট টাইপ, কন্টেন্ট লেংথ, কেশিং পলিসি ইত্যাদি ধারণ করে। এই তথ্যগুলি ম্যানিপুলেট বা বিশ্লেষণ করা প্রায়শই বিভিন্ন ক্ষেত্রে দরকার হয়, যেমন নিরাপত্তা, ডেটা যাচাই বা কাস্টম হেডার প্রক্রিয়াকরণ।
Apache HTTP Client-এ HttpResponse
এর মাধ্যমে প্রতিক্রিয়ার হেডারগুলি অ্যাক্সেস করা এবং ম্যানিপুলেট করা যায়।
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.http.Header;
public class ApacheHttpClientResponseHeaders {
public static void main(String[] args) {
// HttpClient তৈরি করুন
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
// GET অনুরোধের URL দিন
HttpGet httpGet = new HttpGet("https://jsonplaceholder.typicode.com/posts/1");
// অনুরোধ পাঠিয়ে প্রতিক্রিয়া সংগ্রহ করুন
CloseableHttpResponse response = httpClient.execute(httpGet);
try {
// প্রতিক্রিয়া থেকে স্ট্যাটাস কোড পান
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Response Status Code: " + statusCode);
// প্রতিক্রিয়া হেডারগুলি পেতে
Header[] headers = response.getAllHeaders();
// সব হেডার প্রিন্ট করা
System.out.println("Response Headers:");
for (Header header : headers) {
System.out.println(header.getName() + ": " + header.getValue());
}
// একটি নির্দিষ্ট হেডার পড়া
String contentType = response.getFirstHeader("Content-Type").getValue();
System.out.println("Content-Type Header: " + contentType);
// HttpEntity থেকে ডেটা পড়ুন
HttpEntity entity = response.getEntity();
if (entity != null) {
// কনটেন্ট স্ট্রিং আকারে পড়ুন
String responseBody = EntityUtils.toString(entity);
System.out.println("Response Content: " + responseBody);
}
} finally {
// প্রতিক্রিয়া বন্ধ করুন
response.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// HttpClient বন্ধ করুন
httpClient.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
HttpClient তৈরি করা
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpClients.createDefault()
ব্যবহার করে একটি HTTP ক্লায়েন্ট তৈরি করা হয়েছে।HTTP GET অনুরোধ তৈরি করা
HttpGet httpGet = new HttpGet("https://jsonplaceholder.typicode.com/posts/1");
HttpGet
অবজেক্ট দিয়ে GET অনুরোধ তৈরি করা হয়েছে, যেটি একটি URL (https://jsonplaceholder.typicode.com/posts/1
) এ পাঠানো হয়েছে।Response Headers সংগ্রহ
Header[] headers = response.getAllHeaders();
getAllHeaders()
ব্যবহার করে সমস্ত হেডার সংগ্রহ করা হয়েছে। এই মেথড হেডারগুলির একটি অ্যারে ফেরত দেয়।Response Headers প্রিন্ট করা
for (Header header : headers) {
System.out.println(header.getName() + ": " + header.getValue());
}
নির্দিষ্ট হেডার পড়া
String contentType = response.getFirstHeader("Content-Type").getValue();
getFirstHeader("Content-Type")
ব্যবহার করে Content-Type
হেডারের মান পড়া হয়েছে।EntityUtils.toString(entity)
ব্যবহার করে প্রাপ্ত প্রতিক্রিয়া বডি (যেমন JSON ডেটা) পড়া হয়েছে।no-cache
, max-age
ইত্যাদি)।HttpResponse
এর মাধ্যমে Response Headers অ্যাক্সেস এবং ম্যানিপুলেট করা একটি গুরুত্বপূর্ণ দিক, বিশেষ করে যখন সার্ভারের প্রাপ্ত তথ্য (যেমন কুকি, কন্টেন্ট টাইপ, কেশিং, ইত্যাদি) প্রক্রিয়াজাত বা যাচাই করার প্রয়োজন হয়। HttpClient
এ getAllHeaders()
এবং getFirstHeader()
ব্যবহার করে হেডারগুলি পাওয়া এবং বিশ্লেষণ করা সহজ এবং কার্যকরী পদ্ধতি।
Apache HTTP Client: InputStream এবং String এর মাধ্যমে Response রিড করা
Apache HTTP Client ব্যবহার করে HTTP request পাঠানোর পর, response হিসেবে ডেটা পাওয়া যায়। এই response ডেটা InputStream বা String হিসেবে পড়া যেতে পারে। InputStream
সাধারণত বড় ডেটা, যেমন ফাইল বা বাইনারি ডেটা, পড়তে ব্যবহৃত হয়, আর String
ব্যবহার করা হয় সাধারণত টেক্সট বা JSON ডেটা পড়ার জন্য।
EntityUtils
বা সরাসরি InputStream
ব্যবহার করে ডেটা পড়তে পারি।import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class ApacheHttpClientResponseExample {
public static void main(String[] args) {
// HTTP ক্লায়েন্ট তৈরি
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// POST Request এর URL
String url = "https://example.com/api";
// HttpPost অবজেক্ট তৈরি
HttpPost postRequest = new HttpPost(url);
// JSON বা অন্য ধরনের ডেটা পাঠানোর জন্য কন্টেন্ট সেট করা
String json = "{ \"name\": \"John\", \"age\": 30 }";
StringEntity entity = new StringEntity(json);
// Request Content-Type সেট করা
postRequest.setEntity(entity);
postRequest.setHeader("Accept", "application/json");
postRequest.setHeader("Content-Type", "application/json");
// POST Request পাঠানো এবং Response গ্রহণ করা
HttpResponse response = httpClient.execute(postRequest);
// Response থেকে Entity পাওয়া
HttpEntity responseEntity = response.getEntity();
// InputStream এর মাধ্যমে Response রিড করা
InputStream inputStream = responseEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder responseBody = new StringBuilder();
while ((line = reader.readLine()) != null) {
responseBody.append(line);
}
System.out.println("Response Body (InputStream): " + responseBody.toString());
// অথবা String হিসেবে Response রিড করা (EntityUtils ব্যবহার করে)
String responseBodyString = EntityUtils.toString(responseEntity);
System.out.println("Response Body (String): " + responseBodyString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
responseEntity.getContent()
মেথড ব্যবহার করে response ডেটা একটি InputStream
আকারে পাওয়া যায়।BufferedReader
এবং InputStreamReader
ব্যবহার করে আমরা response এর প্রতিটি লাইন পড়তে পারি এবং StringBuilder ব্যবহার করে response body সংগ্রহ করতে পারি।EntityUtils.toString(responseEntity)
ব্যবহার করে response ডেটাকে সরাসরি String আকারে পড়ে নেওয়া যায়। এটি সাধারণত JSON বা টেক্সট ফরম্যাটের response ডেটা পড়তে ব্যবহৃত হয়।Apache HTTP Client ব্যবহার করে HTTP request পাঠানোর পর response ডেটা InputStream বা String এর মাধ্যমে পড়া যায়। InputStream বড় ডেটা বা বাইনারি ডেটা পড়তে ব্যবহৃত হয়, আর String সাধারণত JSON বা টেক্সট ডেটা পড়তে ব্যবহৃত হয়। EntityUtils
ব্যবহার করে response কে String আকারে রিড করা খুবই সহজ, এবং InputStream
ব্যবহার করে আপনি আরও নমনীয়ভাবে response ডেটা প্রক্রিয়া করতে পারেন।
common.read_more